/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.agi.myhome;

import br.com.agi.myhome.dominio.Estoque;
import br.com.agi.myhome.dominio.EstoqueProduto;
import br.com.agi.myhome.dominio.Produto;
import br.com.agi.myhome.servicos.CadastradorProduto;
import br.com.agi.myhome.util.BeanUtil;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

/**
 *
 * @author Renato
 */
@Named
@ConversationScoped
public class ComprarProduto implements Serializable {
    @Inject
    private Conversation conversation;
    
    @Inject
    private IniciadorConversacao iniciadorConversacao;
    
    @Inject
    private BeanUtil beanUtil;
    
    @Inject
    private ControladorProduto controladorProduto;
    
    @Inject 
    private CadastroProduto cadastroProduto;
    
    
    @EJB
    private CadastradorProduto cadastradorProduto;
    
    private EstoqueProduto estoqueProduto;
    
    public ComprarProduto(){  
        this.iniciarPagina();

    }
    
    public void iniciarConversacao(){
        this.iniciadorConversacao.iniciarConversacao(conversation);
    }     
    
    public void iniciarPagina(){
        this.estoqueProduto=new EstoqueProduto();
        this.estoqueProduto.setProduto(new Produto());
        this.estoqueProduto.setEstoque(new Estoque());
        this.estoqueProduto.setQuantidade(1);
    }
    
    @PostConstruct    
    public void init(){
        this.cadastroProduto.montarListaSelecaoEstoque();
    }
    
   
    
    public String buscarProduto(){
        Produto p;
        this.iniciarConversacao();
        p=cadastradorProduto.getEntidade(estoqueProduto.getProduto());
        if(p==null){
            controladorProduto.aprentarCompra();
            beanUtil.registrarFalha("registro_nao_encontrado");
        }else{
            this.estoqueProduto.setProduto(p);          
            this.controladorProduto.apresentarProdutoComprado();
        }
        return "";
    }   
    
    public String registrarCompra(){
        String retorno;
        retorno="";
        this.cadastradorProduto.adicionarEstoque(estoqueProduto);
        this.iniciarPagina();
        this.controladorProduto.aprentarCompra();
        beanUtil.registrarSucesso("registro_compra");
        return retorno;
    }

    public EstoqueProduto getEstoqueProduto() {
        return estoqueProduto;
    }

    public void setEstoqueProduto(EstoqueProduto estoqueProduto) {
        this.estoqueProduto = estoqueProduto;
    }
    
    
   
}
